package com.danbay.cloud.base.device;

import com.danbay.cloud.base.constants.DeviceType;
import com.danbay.framework.utils.DateUtils;
import com.danbay.framework.utils.StringUtils;

public class DeviceHelper {

    /**
     * 生成设备id
     *
     * @param mac 设备mac或唯一码长度不超过16位（不包含非数字和字母）
     *            规则：12位的(yyyyMMddHHmmss)16进制串+mac,mac小于16位时后面补0
     * @return 32位id
     */
    public static String generateDeviceId(String mac, DeviceType deviceType) {
        //取yyyyMMddHHmmss的16进制串
        String timeStr = DateUtils.now(DateUtils.YMDHMS2);
        Long timeLong = Long.parseLong(timeStr);
        timeStr = Long.toHexString(timeLong);
        //去除非数字和字母的字符
        mac = mac.replaceAll("[^0-9A-Za-z]", "").toLowerCase();
        //使用0填充到20位
        mac = StringUtils.rightPad(mac, 31 - timeStr.length(), '0');
        //12+20
        return timeStr + mac + deviceType.value();
    }


}
